/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package resourceplan;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Allocation</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link resourceplan.Allocation#getRole <em>Role</em>}</li>
 *   <li>{@link resourceplan.Allocation#getPerson <em>Person</em>}</li>
 *   <li>{@link resourceplan.Allocation#getRoleWorkloadRatio <em>Role Workload Ratio</em>}</li>
 * </ul>
 * </p>
 *
 * @see resourceplan.ResourceplanPackage#getAllocation()
 * @model annotation="gmf.link lable='roleWorkloadRatio' source='role' target='person'"
 * @generated
 */
public interface Allocation extends EObject {
	/**
	 * Returns the value of the '<em><b>Role</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link resourceplan.Role#getAllocations <em>Allocations</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Role</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Role</em>' reference.
	 * @see #setRole(Role)
	 * @see resourceplan.ResourceplanPackage#getAllocation_Role()
	 * @see resourceplan.Role#getAllocations
	 * @model opposite="allocations" required="true"
	 * @generated
	 */
	Role getRole();

	/**
	 * Sets the value of the '{@link resourceplan.Allocation#getRole <em>Role</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Role</em>' reference.
	 * @see #getRole()
	 * @generated
	 */
	void setRole(Role value);

	/**
	 * Returns the value of the '<em><b>Person</b></em>' reference.
	 * It is bidirectional and its opposite is '{@link resourceplan.Person#getAllocations <em>Allocations</em>}'.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Person</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Person</em>' reference.
	 * @see #setPerson(Person)
	 * @see resourceplan.ResourceplanPackage#getAllocation_Person()
	 * @see resourceplan.Person#getAllocations
	 * @model opposite="allocations" required="true"
	 * @generated
	 */
	Person getPerson();

	/**
	 * Sets the value of the '{@link resourceplan.Allocation#getPerson <em>Person</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Person</em>' reference.
	 * @see #getPerson()
	 * @generated
	 */
	void setPerson(Person value);

	/**
	 * Returns the value of the '<em><b>Role Workload Ratio</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Role Workload Ratio</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Role Workload Ratio</em>' attribute.
	 * @see #setRoleWorkloadRatio(float)
	 * @see resourceplan.ResourceplanPackage#getAllocation_RoleWorkloadRatio()
	 * @model derived="true"
	 * @generated
	 */
	float getRoleWorkloadRatio();

	/**
	 * Sets the value of the '{@link resourceplan.Allocation#getRoleWorkloadRatio <em>Role Workload Ratio</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Role Workload Ratio</em>' attribute.
	 * @see #getRoleWorkloadRatio()
	 * @generated
	 */
	void setRoleWorkloadRatio(float value);

} // Allocation
